package com.cdel.akka.demo1;

import akka.actor.ActorRef;
import akka.actor.Props;
import akka.actor.UntypedActor;

public class HelloWorld extends UntypedActor {

	ActorRef greeter;

	@Override
	//preStart方法为akka的回调方法，在actor启动前，会被akka框架调用，完成一些初始化的工作。
	public void preStart(){
		//创建Greeter的实例，并且向他发送Greet消息。此时由于创建Greeter时使用的是HelloWorld的上下文，因此它属于HelloWorld的子actor。
		greeter = getContext().actorOf(Props.create(Greeter.class), "greeter");
		System.out.println("Greeter Actor Path:" + greeter.path());
		greeter.tell(Greeter.Msg.GREET, getSelf());
	}

	@Override
	public void onReceive(Object msg) throws Throwable {
		//处理Done消息，收到done消息后，它会向Greeter发送Greet消息，接着将自己停止。
		if(msg == Greeter.Msg.DONE){
			greeter.tell(Greeter.Msg.GREET, getSelf());
			getContext().stop(getSelf());
		}else{
			unhandled(msg);
		}
	}

}
